/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Text,} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl,} from "../../common/base";
import {useMeasureInpFilter} from "../../common/hooks";
import {EditStorageContext} from "../../StorageContext";
import {usePrefixDataEdit} from "../../hook/usePrefixData";

/**@property name : 附录显示名称, 和页面逻辑开关代码上需保持一致的。
 * @property ha : Hash路由标签
 * @property na : 表示不在【结论附录】当中出现的吗，但都出现在目录中的。不在附录表也没有安排目录表这页的也行。
 * @property ml : 该分项在【目录】中的文本显示题目。 可设置尾部统一加上"报告"
 * @property do : 默认有做的分项报告
 * 报告中实际打印顺序看代码：
 * 原平台testlogcfg.ses的 "contlist" :[ {"contname":}, ]列出全部分项。  而"mainpage":[ ]扣除"addpage":[]后的是固定的必须展示。 nosavepage无关的；
 * 【问题】分项报告模式嵌入式情况的，从主报告没法打印这类分项的简易版原始记录；简易版原始记录专门分项想打印的也不支持：hook报错。 分项报告模式 需用orc?.
 * 【注意】可重复分项性质的子报告和普通子报告的存储差别在于：普通子报告直接在data{}根路径安排属性字段的，而前者是嵌入模板代码+序号的字段比如_THICKM_VS_1:底下的；就像报告对象的嵌套关系，
 * 不同版本若在这个问题需要反悔重来的，就需特别做转换迁移旧的报告数据了，js端点击版本转换#转 _module_0：{子报告}； 但若反过来拆除嵌套模式：需确保字段名不和著报告的冲突，只能做第一个分项_THICKM_VS:[0,1];
 * 【考虑】子报告不是明确是否的可重复分项性质的，就暂且搁置为好。
 * */
export const VsProjects默认=[
    {name:'锅炉内部检验结论',ha:'Conclusion', do:true},
    {name:'缺陷和问题处理或整改情况',ha:"Defecthandle", do:true, ml:'缺陷和问题处理或整改情况'},
    {name:'锅炉简图',ha:'BoilerDiagram', ml:'锅炉简图'},
    {name:'主要受压元件情况',ha:'PressureComponents', ml:'主要受压元件情况'},
    {name:'资料查阅',ha:'MaterialReview',},
    {name:'宏观检查',ha:'Macroscopic',},
    //类似【单线图】模式的。
    {name:'部件示意图',ha:'PipeLineDiagram', ml:'部件示意图'},
    //原生模式只能对付唯一个的子报告，不能添加多个同样的报告！还是改掉:
    {name:'内窥镜检查',ha:'rp_endoscopic_ex_'},
    //自带的隐含式的 分项报告，支持多个项目的子报告：若采用可重复分项框架模式的，实际上还过得去，不会比只能允许单个分项的模板做法会复杂多少的。
    {name:'胀粗测量',ha:'rp_swelling_ms_'},
    {name:'壁厚测定',ha:'rp_thickm_'},
    {name:'磁粉检测',ha:'rp_magnetic_'},
    {name:'渗透检测',ha:'rp_permeation_'},
    {name:'射线检测',ha:'rp_radio_'},
    {name:'超声检测',ha:'rp_sonic_'},
    {name:'TOFD检测',ha:'rp_tofd_'},
    //没找到改模板啊
    {name:'相控阵检测',ha:'??'},
    {name:'硬度检测',ha:'rp_hardness_'},
    {name:'金相分析',ha:'??'},
    {name:'大板梁挠度检查',ha:'LargeSlabBeam'},
    //【简易模式】支持多个项目的 ：若采用可重复分项框架模式的，实际上还过得去，不会比只能允许单个分项的模板做法会复杂多少的。
    {name:'尺寸检查',ha:'DimensionInsp'},
    //【另辟模式】最简易例子了【可重复分项/非独立模板形式的】：就是右半边原始记录列表页面：只能显示第一个分项的内容，必须点击左边页面导航动态切换内容的。
    {name:'割管垢样检验',ha:'CutPipeScale'},
    {name:'强度校核',ha:'rp_strength_vfb_'},
    {name:'管道监督段蠕变测量',ha:'rp_pipe_creep_'},
    //【最好模式】有模板号 可独立用的： 支持多个项目
    {name:'弯管不圆度测量',ha:'rp_out_roundness_'},
    {name:'氧化皮堆积量测量',ha:'rp_oxideskin_ac_'},
    {name:'管壁氧化皮厚度测量',ha:'rp_oxideskin_thick_'},
    //旧的内含：割管垢样检验报告.pdf ？不在这里列出的； # 其它：没有模板;
    {name:'其它',ha:'??'},
    //有三种标题的“附页”：允许支持多个分项子报告项目，每个报告独占整张纸张的；
    {name:'联络单意见书回复检验偏离单',ha:'DrawingsExplan',ml:'附页（联络单、意见书回复件及检验偏离单等）'},
];


interface DeviceSurveyPrfProps  extends InternalItemProps{
    //更通用考虑：允许动态配置
    config?: ( (verId:string,orc:any)=>any[] )  | any[];
}
/**特别的 设备概要编辑器: 配置上和原来DeviceSurvey组件有差别。配套使用 usePrefixDataReviewTbl 来展示报告的；
 * 两者不兼容的config配置。 usePrefixDataEdit不支持第三排的编辑录入。
 * */
export const DeviceSurveyPrf=
    React.forwardRef((
        { children, show ,alone=true,verId,redId,nestMd,label,config}:DeviceSurveyPrfProps,  ref
    ) => {
        const {storage, setStorage} =React.useContext(EditStorageContext) as any;
        const {inp, setInp} = useItemInputControl({ref});
        const newconfig = React.useMemo(() => {
            return (typeof config ==='function'? config(verId!,storage) : config);
        }, [config,verId,storage]);
        //【重大】毛病啊config: 动态的就导致：死循环依赖热 【最后】接了一个useMemo包裹呢 @还不能用inp替换storage来做的。
        const [renderEditline, itemA概要] = usePrefixDataEdit({
                        inp, setInp, config: newconfig! });
        const [getInpFilter] = useMeasureInpFilter(null, itemA概要,);
        return <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show} redId={redId}
                                    nestMd={nestMd} alone={alone} label={label!}>
            <Text variant="h5">{label}：</Text>
            设备概况相关，除在台账业务信息中可修改外还需修改的部分:
            {renderEditline}
            { children }
        </InspectRecordLayout>;
    });
